home *** CD-ROM | disk | FTP | other *** search
/ Fashion Advertising Lifestyle 1 / Fashion Advertising Lifestyle 1 - Disc 1.iso / for_pc / pixsetup.ms_ < prev    next >
Text File  |  1994-04-19  |  24KB  |  885 lines

  1. '**************************************************************************
  2. '*                       MSSetup Toolkit PixFolio
  3. '**************************************************************************
  4. ''  Revised Pixfolio Setup Script
  5. ''   Feb 94: David H. Goeb
  6. ''   Additions
  7. ''     Changed to have PCD files as part of application files
  8. ''     Added a WIN.INI check function to see if catalog was 
  9. ''      already installed, and also check if new version.
  10. ''      All Aztech Text files are also added to the program group
  11. ''      Further Enhancements are custom Install call and Multi
  12. ''      Catalog support
  13. ''      Revised april 20th for Peacock Bundler.
  14.  
  15.  
  16. ''   This Setup has been configured for
  17. ''     FASHION ADVERTISING AND LIFESTYLE DISK AZ-059
  18. ''     Catalog Entry Number 99
  19.  
  20. ''$DEFINE DEBUG  ''Define for script development/debugging
  21.  
  22. '$INCLUDE 'setupapi.inc'
  23. '$INCLUDE 'msdetect.inc'
  24. '$INCLUDE 'mscuistf.inc'
  25.  
  26. ''Dialog ID's
  27. CONST WELCOME       = 100
  28. CONST ASKQUIT       = 200
  29. CONST DESTPATH      = 300
  30. CONST EXITFAILURE   = 400
  31. CONST EXITQUIT      = 600
  32. CONST EXITSUCCESS   = 700
  33. CONST EXITREGISTERED= 750
  34. CONST OPTIONS       = 800
  35. CONST APPHELP       = 900
  36. CONST CUSTHELP      = 910
  37. CONST REGHELP       = 920
  38. CONST CUSTINST      = 6200
  39. CONST TOOBIG        = 6300
  40. CONST NOAVI         = 6350
  41. CONST NOAPP         = 6360
  42. CONST BADPATH       = 6400
  43. CONST CDGETNAMEORG  = 7500
  44. CONST MODELESS      = 5000
  45. CONST QUITWIN       = 6500
  46.  
  47. ''Bitmap ID
  48. CONST LOGO = 1
  49.  
  50. ''File Types
  51. CONST APPFILES     = 1
  52. CONST OPTFILES1    = 2
  53. CONST OPTFILES2    = 3
  54. CONST OPTFILES3    = 4
  55. CONST SYMFILES     = 5
  56. CONST CATFILES     = 6
  57. ''================================
  58. GLOBAL CATCOST%
  59.  
  60. GLOBAL CC$
  61.  
  62. GLOBAL DEST$        ''Default destination directory.
  63. GLOBAL WINDRIVE$    ''Windows drive letter.
  64. GLOBAL OPTCUR$      ''Option selection from option dialog.
  65. GLOBAL CUIDLL$      ''Custom user interface DLL
  66. GLOBAL szTempDir$   ''Working directory
  67. GLOBAL SysDir$      ''Windows System Directory
  68. GLOBAL ini$         ''INI file path
  69. GLOBAL astr$        ''Usefull little string
  70.  
  71. GLOBAL NOPT$     ''Option selection from OptFiles1 option dialog.
  72.  
  73. GLOBAL OPT1OPT$     ''?? Option selection from OptFiles1 option dialog.
  74. GLOBAL OPT2OPT$     ''?? Option selection from OptFiles2 option dialog.
  75. GLOBAL OPT3OPT$
  76. GLOBAL SYMOPT$      ''Option selection for symbol files.
  77.  
  78. ''CustInst list symbol names
  79. GLOBAL APPNEEDS$    ''Option list costs per drive
  80. GLOBAL OPT1NEEDS$
  81. GLOBAL OPT2NEEDS$
  82. GLOBAL OPT3NEEDS$   ''Multimedia files
  83. GLOBAL SYMNEEDS$
  84. GLOBAL EXTRACOSTS$  ''List of extra costs to add per drive
  85. GLOBAL BIGLIST$     ''List of option files cost calc results (boolean)
  86.  
  87. ''Dialog list symbol names
  88. GLOBAL CHECKSTATES$
  89. GLOBAL STATUSTEXT$
  90. GLOBAL DRIVETEXT$
  91.  
  92.  
  93. DECLARE SUB AddOptFilesToCopyList (ftype%)
  94. DECLARE SUB RecalcOptFiles (ftype%)
  95. DECLARE SUB RecalcPath
  96. DECLARE SUB SetDriveStatus
  97. DECLARE SUB Install
  98. DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
  99.  
  100.  
  101. INIT:
  102.     CUIDLL$ = "mscuistf.dll"            ''Custom user interface dll
  103.     HELPPROC$ = "FHelpDlgProc"          ''Help dialog procedure
  104.  
  105.     SetBitmap CUIDLL$, LOGO
  106.     SetTitle "PixFolio Setup"
  107.     szTempDir$ = GetSymbolValue("STF_CWDDIR")
  108.     szInf$ = GetSymbolValue("STF_SRCINFPATH")
  109.     IF szInf$ = "" THEN
  110.        szInf$ = GetSymbolValue("STF_CWDDIR") + "PIXSETUP.INF"
  111.     END IF
  112.     ReadInfFile szInf$
  113.     '' Force Catalog to be include unless selected off
  114.  
  115.     NOPT$ = "1"
  116.  
  117.     WINDRIVE$ = MID$(GetWindowsDir, 1, 1)
  118. ''    DEST$ = WINDRIVE$ + ":\PIXFOLIO"
  119.     DEST$ = ".............................................................................................................................."
  120.     GetPixDir DEST$
  121.     if DEST$ = "" THEN
  122.         DEST$ = WINDRIVE$ + ":\PIXFOLIO"
  123.     END IF
  124.     ini$ = MakePath(GetWindowsDir, "WIN.INI")
  125.  
  126.     ''CustInst list symbols
  127.     CHECKSTATES$ = "CheckItemsState"
  128.     STATUSTEXT$  = "StatusItemsText"
  129.     DRIVETEXT$   = "DriveStatusText"
  130. '   FOR i% = 1 TO 3 STEP 1
  131.         AddListItem CHECKSTATES$, "ON"  '' Main program files
  132.         AddListItem CHECKSTATES$, "ON"  '' PCD files
  133.         AddListItem CHECKSTATES$, "OFF" '' VFW
  134.         AddListItem CHECKSTATES$, "ON" '' Multimedia
  135.         AddListItem CHECKSTATES$, "OFF" '' Symbols
  136. '    NEXT i%
  137.     FOR i% = 1 TO 5 STEP 1
  138.         AddListItem STATUSTEXT$, ""
  139.     NEXT i%
  140.     FOR i% = 1 TO 7 STEP 1
  141.         AddListItem DRIVETEXT$, ""
  142.     NEXT i%
  143.     ReplaceListItem DRIVETEXT$, 7, DEST$
  144.  
  145.     ''Disk cost list symbols
  146.     APPNEEDS$   = "AppNeeds"
  147.     OPT1NEEDS$  = "Opt1Needs"
  148.     OPT2NEEDS$  = "Opt2Needs"
  149.     OPT3NEEDS$  = "Opt3Needs"
  150.     SYMNEEDS$   = "SymNeeds"
  151.     EXTRACOSTS$ = "ExtraCosts"
  152.     BIGLIST$    = "BigList"
  153.     FOR i% = 1 TO 5 STEP 1
  154.         AddListItem BIGLIST$, ""
  155.     NEXT i%
  156.     FOR i% = 1 TO 26 STEP 1
  157.         AddListItem EXTRACOSTS$, "0"
  158.     NEXT i%
  159.  
  160.     ''File Option Variables
  161.     OPT1OPT$ = "1"
  162.     OPT2OPT$ = "1"
  163.     OPT3OPT$ = "1"
  164.     SYMOPT$  = "1"
  165.  
  166.     SysDir$ = GetWindowsSysDir()
  167.     RecalcPath
  168. ''    i% = DoMsgBox("RecalcPath OK", "DEBUG", MB_TASKMODAL+MB_ICONHAND+MB_OK)
  169.     SetDriveStatus
  170. ''    i% = DoMsgBox("SetDriveStatus OK", "DEBUG", MB_TASKMODAL+MB_ICONHAND+MB_OK)
  171.  
  172.  
  173.      OPTCUR$ = "1"
  174. '    DEST$ = "C:\PIXFOLIO"
  175.  
  176. '$IFDEF DEBUG
  177.     i% = SetSizeCheckMode(scmOnIgnore)    '' could use scmOff; def = scmOnFatal
  178.     WinDrive$ = MID$(GetWindowsDir, 1, 1)
  179.     IF IsDriveValid(WinDrive$) = 0 THEN
  180.     i% = DoMsgBox("Windows drive ('"+WinDrive$+"') is not a valid drive.", "DEBUG", MB_TASKMODAL+MB_ICONHAND+MB_OK)
  181.     GOTO QUIT
  182.     END IF
  183. '$ENDIF ''DEBUG
  184.  
  185.  
  186. WELCOME:
  187.     sz$ = UIStartDlg(CUIDLL$, WELCOME, "FInfoDlgProc", APPHELP, HELPPROC$)
  188.     IF sz$ = "CONTINUE" THEN
  189.     UIPop 1
  190.     ELSE
  191.     GOSUB ASKQUIT
  192.     GOTO WELCOME
  193.     END IF
  194.  
  195.  
  196. OPTION:
  197.     SetSymbolValue "RadioDefault", OPTCUR$
  198. OPTL1:
  199.  
  200.     NOPT$ = "0"
  201.     sz$ = UIStartDlg(CUIDLL$, OPTIONS, "FRadioDlgProc", APPHELP, HELPPROC$)
  202.     OPTCUR$ = GetSymbolValue("ButtonChecked")
  203.  
  204. '$IFDEF DEBUG
  205.      i% = DoMsgBox("Result ('"+OPTCUR$+"') Was Returned.", "DEBUG", MB_TASKMODAL+MB_ICONHAND+MB_OK)
  206. '$ENDIF ''DEBUG
  207.  
  208.     IF OPTCUR$ = "1" THEN
  209.       NOPT$ = "0"
  210.     ELSE
  211.       NOPT$ = "1"
  212.     END IF
  213.  
  214.     IF sz$ = "CONTINUE" THEN
  215.     UIPop(1)
  216.     ELSEIF sz$ = "REACTIVATE" THEN
  217.     GOTO OPTL1
  218.     ELSE
  219.     GOSUB ASKQUIT
  220.     GOTO OPTION
  221.     END IF
  222.  
  223.  
  224. CUSTINST:
  225.     SetDriveStatus
  226.     sz$ = UIStartDlg(CUIDLL$, CUSTINST, "FCustInstDlgProc", CUSTHELP, HELPPROC$)
  227.  
  228.     IF sz$ = "CONTINUE" THEN
  229.         ''Install only if it will fit.
  230.         FOR i% = 1 TO 5 STEP 1
  231.             IF GetListItem(BIGLIST$, i%) <> "" THEN
  232.                 GOSUB TOOBIG
  233.                 GOTO CUSTINST
  234.             END IF
  235.         NEXT i%
  236.         UIPop 1
  237.         GOTO INSTALLIT
  238.     ELSEIF sz$ = "PATH" THEN
  239.         GOTO GETPATH
  240.     ELSEIF sz$ = "CHK1" THEN
  241.         IF DoesFileExist(MakePath(DEST$, "PIXFOLIO.EXE"), femReadWrite) = 0 AND GetListItem(CHECKSTATES$, APPFILES) = "OFF" THEN
  242.             GOSUB NOAPP
  243.             GOTO CUSTINST
  244.         END IF
  245.         RecalcOptFiles APPFILES
  246.         RecalcOptFiles SYMFILES
  247.         SetDriveStatus
  248.         GOTO CUSTINST
  249.     ELSEIF sz$ = "CHK2" THEN
  250.         RecalcOptFiles OPTFILES1
  251.         RecalcOptFiles SYMFILES
  252.         SetDriveStatus
  253.         GOTO CUSTINST
  254.     ELSEIF sz$ = "CHK3" THEN
  255.         IF GetListItem(CHECKSTATES$, OPTFILES2) = "ON" THEN
  256.             IF CheckForAVI = 0 THEN
  257.                 GOSUB NOAVI
  258.                 ReplaceListItem CHECKSTATES$, OPTFILES2, "OFF"
  259.             END IF
  260.         END IF
  261.         RecalcOptFiles OPTFILES2
  262.         RecalcOptFiles SYMFILES
  263.         SetDriveStatus
  264.         GOTO CUSTINST
  265.     ELSEIF sz$ = "CHK4" THEN
  266.         RecalcOptFiles OPTFILES3
  267.         RecalcOptFiles SYMFILES
  268.         SetDriveStatus
  269.         GOTO CUSTINST
  270.     ELSEIF sz$ = "CHK5" THEN
  271.         RecalcOptFiles SYMFILES
  272.         SetDriveStatus
  273.         GOTO CUSTINST
  274.  
  275.     ELSEIF sz$ = "BTN2" THEN
  276.         GOTO OPTFILES1
  277.     ELSEIF sz$ = "BTN3" THEN
  278.         GOTO OPTFILES2
  279.     ELSEIF sz$ = "BTN4" THEN
  280.         GOTO OPTFILES3
  281.     ELSEIF sz$ = "BTN5" THEN
  282.         GOTO SYMFILES
  283.     ELSEIF sz$ = "REACTIVATE" THEN
  284.         RecalcPath
  285.         SetDriveStatus
  286.         GOTO CUSTINST
  287.     ELSE
  288.         GOSUB ASKQUIT
  289.         GOTO CUSTINST
  290.     END IF
  291.  
  292.  
  293. GETPATH:
  294.     SetSymbolValue "EditTextIn", DEST$
  295.     SetSymbolValue "EditFocus", "END"
  296. GETPATHL1:
  297.     sz$ = UIStartDlg(CUIDLL$, DESTPATH, "FEditDlgProc", APPHELP, HELPPROC$)
  298.  
  299.     IF sz$ = "CONTINUE" THEN
  300.         olddest$ = DEST$
  301.         DEST$ = GetSymbolValue("EditTextOut")
  302.  
  303.         ''Validate new path.
  304.         IF IsDirWritable(DEST$) = 0 THEN
  305.             GOSUB BADPATH
  306.             GOTO GETPATHL1
  307.         END IF
  308.         UIPop 1
  309.  
  310.         ''Truncate display if too long.
  311.         IF LEN(DEST$) > 23 THEN
  312.             ReplaceListItem DRIVETEXT$, 7, MID$(DEST$, 1, 23)+"..."
  313.         ELSE
  314.             ReplaceListItem DRIVETEXT$, 7, DEST$
  315.         END IF
  316.  
  317.         ''Recalc if path changed.
  318.         IF (olddest$ <> DEST$) AND (olddest$ <> DEST$+"\") AND (olddest$+"\" <> DEST$) THEN
  319.             RecalcPath
  320.             SetDriveStatus
  321.         END IF
  322.  
  323.         olddest$ = ""
  324.         GOTO CUSTINST
  325.     ELSEIF sz$ = "REACTIVATE" THEN
  326.         RecalcPath
  327.         SetDriveStatus
  328.         GOTO GETPATHL1
  329.     ELSEIF sz$ = "EXIT" THEN
  330.         GOSUB ASKQUIT
  331.         GOTO GETPATHL1
  332.     ELSE
  333.         UIPop 1
  334.         GOTO CUSTINST
  335.     END IF
  336.  
  337. INSTALLIT:
  338.     SetSymbolValue "SERIAL", "2X09AA001302"
  339.     SetSymbolValue "OWNER", "Aztech New Media Corp."
  340.     IF DoesFileExist(MakePath(DEST$, "PIXFOLIO.EXE"), femReadWrite) = 1 THEN
  341.         l& = GetStringTable(DEST$)
  342.         IF DoesFileExist(MakePath(DEST$, "PIXFOLIO.INI"), femReadWrite) = 1 THEN
  343.             ini$ = MakePath(DEST$, "PIXFOLIO.INI")
  344.         END IF
  345.     END IF
  346.     SERIAL$ = GetSymbolValue("SERIAL")
  347.     OWNER$  = GetSymbolValue("OWNER")
  348.     SERIAL1$ = GetIniKeyString(ini$, "PixFolio", "Registration Nbr")
  349.     OWNER1$ = GetIniKeyString(ini$, "PixFolio", "Registered To")
  350. '*    i% = DoMsgBox(SERIAL$+" "+SERIAL1, "Serial Number", MB_OK)
  351.  
  352.     IF ValidateReg(SERIAL1$) = 1 THEN
  353.         SERIAL$ = SERIAL1$
  354.         OWNER$ = OWNER1$
  355. '*        i% = DoMsgBox(SERIAL$+" "+SERIAL1, "Serial Number", MB_OK)
  356.     END IF
  357.     SetSymbolValue "SERIAL", SERIAL$
  358.     SetSymbolValue "OWNER", OWNER$
  359.  
  360.     Install
  361.  
  362.     IF(DoesFileExist(MakePath(DEST$, "PIXPCD.DLL"), femReadWrite) = 1 OR DoesFileExist(MakePath(DEST$, "PIXAVI.DLL"), femReadWrite) = 1) AND MID$(SERIAL$, 6, 1) <> "B" THEN
  363.         GOTO GETSERIAL
  364.     END IF
  365.  
  366.     IF ValidateReg(SERIAL$) = 1 THEN
  367.         GOTO UPDATEIT
  368.     END IF
  369.  
  370. GETSERIAL:
  371.  
  372.     sz$ = UIStartDlg(CUIDLL$, CDGETNAMEORG, "FNameOrgDlgProc", REGHELP, HELPPROC$)
  373.     DEST$ = GetSymbolValue("EditTextOut")
  374.  
  375.     IF sz$ = "CONTINUE" THEN
  376.         UIPop 1
  377.     ELSEIF sz$ = "CANCEL" THEN
  378.         UIPop 1
  379.     ELSE
  380.         GOSUB ASKQUIT
  381.         GOTO GETSERIAL
  382.     END IF
  383.  
  384.     SERIAL$ = GetSymbolValue("SERIAL")
  385.     OWNER$  = GetSymbolValue("OWNER")
  386.  
  387. UPDATEIT:
  388.     IF ValidateReg(SERIAL$) = 1 THEN
  389. '*        l& = PutStringTable(DEST$)
  390.         CreateIniKeyValue ini$, "PixFolio", "Registration Nbr", SERIAL$, cmoOverwrite
  391.         CreateIniKeyValue ini$, "PixFolio", "Registered To", OWNER$, cmoOverwrite
  392.     ELSE
  393.         CreateProgmanItem "PixFolio", "Register", "notepad.exe "+MakePath(DEST$,"PIXREGST.FRM"), "", cmoOverwrite
  394.     END IF
  395.  
  396. '*    Install
  397. QUITWIN:
  398.     ii% = RestartListEmpty()
  399.     IF ii% = 0 THEN
  400.         sz$ = UIStartDlg(CUIDLL$, QUITWIN, "FQuitWinDlgProc", 0, "")
  401.         IF sz$ = "CONTINUE" THEN
  402.             UIPop 1
  403.         ELSEIF sz$ = "REACTIVATE" THEN
  404.             GOTO QUITWIN
  405.         ELSE
  406.             GOSUB ASKQUIT
  407.             GOTO QUITWIN
  408.         END IF
  409.         ij% = ExitExecRestart()
  410.     END IF
  411.  
  412.  
  413. QUIT:
  414.     ON ERROR GOTO ERRQUIT
  415.  
  416.     IF ERR = 0 THEN
  417.         IF ValidateReg(SERIAL$) = 1 THEN
  418.             dlg% = EXITREGISTERED
  419.         ELSE
  420.             dlg% = EXITSUCCESS
  421.         END IF
  422.     ELSEIF ERR = STFQUIT THEN
  423.     dlg% = EXITQUIT
  424.     ELSE
  425.     dlg% = EXITFAILURE
  426.     END IF
  427. QUITL1:
  428.     sz$ = UIStartDlg(CUIDLL$, dlg%, "FInfo0DlgProc", 0, "")
  429.     IF sz$ = "REACTIVATE" THEN
  430.     GOTO QUITL1
  431.     END IF
  432.     UIPop 1
  433.  
  434.     END
  435.  
  436. ERRQUIT:
  437.     i% = DoMsgBox("Setup sources were corrupted, call (502) 955-7527!", "Setup Message", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  438.     END
  439.  
  440. OPTFILES1:
  441.     SetSymbolValue "RadioDefault", OPT1OPT$
  442. OPT1L1:
  443.     sz$ = UIStartDlg(CUIDLL$, OPTIONS, "FRadioDlgProc", APPHELP, HELPPROC$)
  444.     newopt$ = GetSymbolValue("ButtonChecked")
  445.  
  446.     IF sz$ = "CONTINUE" THEN
  447.         UIPop 1
  448.         IF newopt$ <> OPT1OPT$ THEN
  449.             OPT1OPT$ = newopt$
  450.             RecalcOptFiles OPTFILES1
  451.             SetDriveStatus
  452.         END IF
  453.         newopt$ = ""
  454.         GOTO CUSTINST
  455.     ELSEIF sz$ = "REACTIVATE" THEN
  456.         RecalcPath
  457.         SetDriveStatus
  458.         GOTO OPT1L1
  459.     ELSEIF sz$ = "EXIT" THEN
  460.         GOSUB ASKQUIT
  461.         GOTO OPT1L1
  462.     ELSE
  463.         UIPop 1
  464.         newopt$ = ""
  465.         GOTO CUSTINST
  466.     END IF
  467.  
  468.  
  469.  
  470. OPTFILES2:
  471.     SetSymbolValue "RadioDefault", OPT2OPT$
  472. OPT2L1:
  473.     sz$ = UIStartDlg(CUIDLL$, OPTIONS, "FRadioDlgProc", APPHELP, HELPPROC$)
  474.     newopt$ = GetSymbolValue("ButtonChecked")
  475.  
  476.     IF sz$ = "CONTINUE" THEN
  477.         UIPop 1
  478.         IF newopt$ <> OPT2OPT$ THEN
  479.             OPT2OPT$ = newopt$
  480.             RecalcOptFiles OPTFILES2
  481.             SetDriveStatus
  482.         END IF
  483.         newopt$ = ""
  484.         GOTO CUSTINST
  485.     ELSEIF sz$ = "REACTIVATE" THEN
  486.         RecalcPath
  487.         SetDriveStatus
  488.         GOTO OPT2L1
  489.     ELSEIF sz$ = "EXIT" THEN
  490.         GOSUB ASKQUIT
  491.         GOTO OPT2L1
  492.     ELSE
  493.         UIPop 1
  494.         newopt$ = ""
  495.         GOTO CUSTINST
  496.     END IF
  497.  
  498. OPTFILES3:
  499.     SetSymbolValue "RadioDefault", OPT3OPT$
  500. OPT3L1:
  501.     sz$ = UIStartDlg(CUIDLL$, OPTIONS, "FRadioDlgProc", APPHELP, HELPPROC$)
  502.     newopt$ = GetSymbolValue("ButtonChecked")
  503.  
  504.     IF sz$ = "CONTINUE" THEN
  505.         UIPop 1
  506.         IF newopt$ <> OPT3OPT$ THEN
  507.             OPT3OPT$ = newopt$
  508.             RecalcOptFiles OPTFILES3
  509.             SetDriveStatus
  510.         END IF
  511.         newopt$ = ""
  512.         GOTO CUSTINST
  513.     ELSEIF sz$ = "REACTIVATE" THEN
  514.         RecalcPath
  515.         SetDriveStatus
  516.         GOTO OPT3L1
  517.     ELSEIF sz$ = "EXIT" THEN
  518.         GOSUB ASKQUIT
  519.         GOTO OPT3L1
  520.     ELSE
  521.         UIPop 1
  522.         newopt$ = ""
  523.         GOTO CUSTINST
  524.     END IF
  525.  
  526. SYMFILES:
  527.     SetSymbolValue "RadioDefault", SYMOPT$
  528. OPTSL1:
  529.     sz$ = UIStartDlg(CUIDLL$, OPTIONS, "FRadioDlgProc", APPHELP, HELPPROC$)
  530.     newopt$ = GetSymbolValue("ButtonChecked")
  531.  
  532.     IF sz$ = "CONTINUE" THEN
  533.         UIPop 1
  534.         IF newopt$ <> SYMOPT$ THEN
  535.             SYMOPT$ = newopt$
  536.             RecalcOptFiles SYMFILES
  537.             SetDriveStatus
  538.         END IF
  539.         newopt$ = ""
  540.         GOTO CUSTINST
  541.     ELSEIF sz$ = "REACTIVATE" THEN
  542.         RecalcPath
  543.         SetDriveStatus
  544.         GOTO OPTSL1
  545.     ELSEIF sz$ = "EXIT" THEN
  546.         GOSUB ASKQUIT
  547.         GOTO OPTSL1
  548.     ELSE
  549.         UIPop 1
  550.         newopt$ = ""
  551.         GOTO CUSTINST
  552.     END IF
  553.  
  554.  
  555. TOOBIG:
  556.     sz$ = UIStartDlg(CUIDLL$, TOOBIG, "FInfo0DlgProc", 0, "")
  557.     IF sz$ = "REACTIVATE" THEN
  558.         RecalcPath
  559.         SetDriveStatus
  560.         GOTO TOOBIG
  561.     END IF
  562.     UIPop 1
  563.     RETURN
  564.  
  565. NOAVI:
  566.     sz$ = UIStartDlg(CUIDLL$, NOAVI, "FInfo0DlgProc", 0, "")
  567.     IF sz$ = "REACTIVATE" THEN
  568.         RecalcPath
  569.         SetDriveStatus
  570.         GOTO NOAVI
  571.     END IF
  572.     UIPop 1
  573.     RETURN
  574.  
  575. NOAPP:
  576.     sz$ = UIStartDlg(CUIDLL$, NOAPP, "FInfo0DlgProc", 0, "")
  577.     IF sz$ = "REACTIVATE" THEN
  578.         RecalcPath
  579.         SetDriveStatus
  580.         GOTO NOAPP
  581.     END IF
  582.     UIPop 1
  583.     RETURN
  584.  
  585.  
  586. BADPATH:
  587.     sz$ = UIStartDlg(CUIDLL$, BADPATH, "FInfo0DlgProc", 0, "")
  588.     IF sz$ = "REACTIVATE" THEN
  589.     GOTO BADPATH
  590.     END IF
  591.     UIPop 1
  592.     RETURN
  593.  
  594.  
  595. ASKQUIT:
  596.     sz$ = UIStartDlg(CUIDLL$, ASKQUIT, "FQuitDlgProc", 0, "")
  597.  
  598.     IF sz$ = "EXIT" THEN
  599.     UIPopAll
  600.     ERROR STFQUIT
  601.     ELSEIF sz$ = "REACTIVATE" THEN
  602.     GOTO ASKQUIT
  603.     ELSE
  604.     UIPop 1
  605.     END IF
  606.     RETURN
  607.  
  608.  
  609.  
  610. '**
  611. '** Purpose:
  612. '**     Builds the copy list and performs all installation operations.
  613. '** Arguments:
  614. '**     none.
  615. '** Returns:
  616. '**     none.
  617. '*************************************************************************
  618. SUB Install STATIC
  619.  
  620.       lTicks& = 20
  621.  
  622.       SrcDir$ = GetSymbolValue("STF_SRCDIR")
  623.       CreateDir DEST$, cmoNone
  624.       ClearBillboardList
  625.       AddToBillboardList CUIDLL$, MODELESS, "FModelessDlgProc", lTicks&
  626.  
  627.       OpenLogFile MakePath(DEST$, "LOGFILE.OUT"), 0
  628.       WriteToLogFile ""
  629.       WriteToLogFile "  User chose as destination directory: '" + DEST$ + "'"
  630.       WriteToLogFile "  User chose option: '" + OPTCUR$ + "'"
  631.       WriteToLogFile ""
  632.       WriteToLogFile "May have had to create the directory: " + DEST$
  633.       WriteToLogFile ""
  634.  
  635.       SetRestartDir(szTempDir)
  636.  
  637.       ClearCopyList
  638.       AddOptFilesToCopyList APPFILES
  639.       AddOptFilesToCopyList OPTFILES1
  640.       AddOptFilesToCopyList OPTFILES2
  641.       AddOptFilesToCopyList OPTFILES3
  642.       AddOptFilesToCopyList SYMFILES
  643.  
  644.  
  645.       AddSectionFilesToCopyList "Remove List", SrcDir$, DEST$
  646.  
  647.       IF NOPT$ = "0" THEN
  648.      cat$ = MakePath(SrcDir$, "FAL_I_"+MID$(SrcDir$,1,1)+".CAT")
  649.       ELSE
  650.      AddSectionFilesToCopyList "Catalog"+MID$(SrcDir$,1,1), SrcDir$, DEST$
  651.      cat$ = MakePath(DEST$, "FAL_I_"+MID$(SrcDir$,1,1)+".CAT")
  652.       END IF
  653.  
  654.       CopyFilesInCopyList
  655.  
  656.       vol$ = "              "
  657.       GetVolume SrcDir$, vol$
  658.       Ext$ = "*.GIF;*.BMP;*.TIF;*.TGA;*.IFF;*.PCX;*.WMF;*.EPS;*.WPG;*.PCD"
  659.       i% = DoesFileExist(cat$, femExists)
  660.       j% = DoesIniSectionExist("WIN.INI", "PixFolio")
  661.       IF i = 1 And j = 0 THEN
  662.         '' CreateIniKeyValue "WIN.INI", "PixFolio", "Catalog1", "Default," + cat$ + "," + Ext$ +"," + vol$ + ",READONLY", cmoNone
  663.         CreateIniKeyValue "WIN.INI", "PixFolio", "Catalog99", "Fashion Advertising Lifestyle," + cat$ + "," + Ext$ + ", , READONLY", cmoOverwrite
  664.         CreateIniKeyValue "WIN.INI", "PixFolio", "Catalogs", "99", cmoNone
  665.     ELSE
  666.         CreateIniKeyValue "WIN.INI", "PixFolio", "Catalog99", "Fashion Advertising Lifestyle," + cat$ + "," + Ext$ + ", , READONLY", cmoOverwrite
  667.         CreateIniKeyValue "WIN.INI", "PixFolio", "Catalogs", "99", cmoOverwrite
  668.     ENDIF
  669.  
  670.     IF DoesFileExist(MakePath(DEST$, "PIXPCD.DLL"), femReadWrite) = 1 THEN
  671.         CreateIniKeyValue "WIN.INI", "PixFolio", "PCD Resolution", "3", cmoNone
  672.         CreateIniKeyValue "WIN.INI", "PixFolio", "PCD Format", "2", cmoNone
  673.     END IF
  674.  
  675.     CreateProgmanGroup "PixFolio", "", cmoNone
  676.     ShowProgmanGroup  "PixFolio", 1, cmoNone
  677.     CreateProgmanItem "PixFolio", "PixFolio", MakePath(DEST$,"PixFolio"), "", cmoOverwrite
  678.     CreateProgmanItem "PixFolio", "Read Me", "NotePad.exe "+MakePath(DEST$,"PIXREAD.ME"), "", cmoOverwrite
  679.     CreateProgmanItem "PixFolio", "User Guide", "Write.exe "+MakePath(DEST$,"UsrGuide.wri"), "", cmoOverwrite
  680.     CreateProgmanItem "PixFolio", "License Agreement", "Notepad.exe "+MakePath(DEST$,"LICENSE.TXT"), "", cmoOverwrite
  681.     CreateProgmanItem "PixFolio", "Other Products", "NotePad.exe "+MakePath(DEST$,"OTH_PROD.TXT"), "", cmoOverwrite
  682.     CloseLogFile
  683.  
  684. END SUB
  685.  
  686.  
  687.  
  688. '**
  689. '** Purpose:
  690. '**     Appends a file name to the end of a directory path,
  691. '**     inserting a backslash character as needed.
  692. '** Arguments:
  693. '**     szDir$  - full directory path (with optional ending "\")
  694. '**     szFile$ - filename to append to directory
  695. '** Returns:
  696. '**     Resulting fully qualified path name.
  697. '*************************************************************************
  698. FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
  699.     IF szDir$ = "" THEN
  700.     MakePath = szFile$
  701.     ELSEIF szFile$ = "" THEN
  702.     MakePath = szDir$
  703.     ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
  704.     MakePath = szDir$ + szFile$
  705.     ELSE
  706.     MakePath = szDir$ + "\" + szFile$
  707.     END IF
  708. END FUNCTION
  709.  
  710. '**
  711. '** Purpose:
  712. '**     Adds the specified option files to the copy list.
  713. '** Arguments:
  714. '**     ftype%  - type of files to add, one of the following:
  715. '**             APPFILES, OPTFILES1, OPTFILES2
  716. '** Returns:
  717. '**     none.
  718. '*************************************************************************
  719. SUB AddOptFilesToCopyList (ftype%) STATIC
  720.  
  721.     IF GetListItem(CHECKSTATES$, ftype%) = "ON" THEN
  722.         SrcDir$ = GetSymbolValue("STF_SRCDIR")
  723.         IF ftype% = APPFILES THEN
  724.             AddSectionFilesToCopyList "PixFolio Files", SrcDir$, DEST$
  725.             AddSectionFilesToCopyList "System Files", SrcDir$, SysDir$
  726.         ELSEIF ftype% = OPTFILES1 THEN
  727.                         '' Not any more
  728.             AddSectionFilesToCopyList "PCD Files", SrcDir$, DEST$
  729.         ELSEIF ftype% = OPTFILES2 THEN
  730.             AddSectionFilesToCopyList "VFW Files", SrcDir$, DEST$
  731.         ELSEIF ftype% = OPTFILES3 THEN
  732.             AddSectionFilesToCopyList "Multimedia Files", SrcDir$, DEST$
  733.         ELSEIF ftype% = SYMFILES THEN
  734. ''            i% = DoMsgBox("AddOptFiles" + STR$(ftype%), "DEBUG", MB_TASKMODAL+MB_ICONHAND+MB_OK)
  735.             IF GetListItem(CHECKSTATES$, APPFILES) = "ON" THEN
  736.                 AddSectionFilesToCopyList "PixFolio Symbols", SrcDir$, DEST$
  737.             END IF
  738.             IF GetListItem(CHECKSTATES$, OPTFILES1) = "ON" THEN
  739.                 AddSectionFilesToCopyList "PCD Symbols", SrcDir$, DEST$
  740.             END IF
  741.             IF GetListItem(CHECKSTATES$, OPTFILES2) = "ON" THEN
  742.                 AddSectionFilesToCopyList "VFW Symbols", SrcDir$, DEST$
  743.             END IF
  744.             IF GetListItem(CHECKSTATES$, OPTFILES3) = "ON" THEN
  745.                 AddSectionFilesToCopyList "Multimedia Symbols", SrcDir$, DEST$
  746.             END IF
  747.         END IF
  748.         SrcDir$ = ""
  749.     END IF
  750. END SUB
  751.  
  752. '**
  753. '** Purpose:
  754. '**     Recalculates disk space for the given option files and sets
  755. '**     the status info symbol "StatusItemsText".
  756. '** Arguments:
  757. '**     ftype% - type of files to add, one of the following:
  758. '**             APPFILES, OPTFILES1, OPTFILES2
  759. '** Returns:
  760. '**     none.
  761. '*************************************************************************
  762. SUB RecalcOptFiles (ftype%) STATIC
  763.     CursorSave% = ShowWaitCursor()
  764.     ClearCopyList
  765.     AddOptFilesToCopyList ftype%
  766. ''    i% = DoMsgBox("Added files to copy list " + STR$(ftype%), "DEBUG", MB_TASKMODAL+MB_ICONHAND+MB_OK)
  767.     fExtra% = 0
  768.     IF ftype% = APPFILES THEN
  769.         ListSym$ = APPNEEDS$
  770.         IF GetListItem(CHECKSTATES$, APPFILES) = "ON" THEN
  771.             ''Add extra cost to Windows drive for ini/progman, etc.
  772.             ndrive% = ASC(ucase$(WINDRIVE$)) - ASC("A") + 1
  773.             ReplaceListItem EXTRACOSTS$, ndrive%, "10240"
  774.             fExtra% = 1
  775.         END IF
  776.     ELSEIF ftype% = OPTFILES1 THEN
  777.         ListSym$ = OPT1NEEDS$
  778.     ELSEIF ftype% = OPTFILES2 THEN
  779.         ListSym$ = OPT2NEEDS$
  780.     ELSEIF ftype% = OPTFILES3 THEN
  781.         ListSym$ = OPT3NEEDS$
  782.     ELSEIF ftype% = SYMFILES THEN
  783.         ListSym$ = SYMNEEDS$
  784.     END IF
  785. ''    i% = DoMsgBox("ListSym$ =" + ListSym$, "DEBUG", MB_TASKMODAL+MB_ICONHAND+MB_OK)
  786.     StillNeed& = GetCopyListCost(EXTRACOSTS$, ListSym$, "")
  787.  
  788.     cost& = 0
  789.  
  790.     FOR i% = 1 TO 26 STEP 1
  791.         cost&  = cost& + VAL(GetListItem(ListSym$, i%))
  792.     NEXT i%
  793.     IF NOPT$ = "1" THEN
  794.         ReplaceListItem STATUSTEXT$, ftype%, STR$(cost& / 1024) + " K (Including Catalog)"
  795.     ELSE
  796.         ReplaceListItem STATUSTEXT$, ftype%, STR$(cost& / 1024) + " K"
  797.     END IF
  798.  
  799.  
  800.     IF StillNeed& > 0 THEN
  801.         ReplaceListItem BIGLIST$, ftype%, "YES"
  802.     ELSE
  803.         ReplaceListItem BIGLIST$, ftype%, ""
  804.     END IF
  805.  
  806.     IF fExtra% THEN
  807.         ReplaceListItem EXTRACOSTS$, ndrive%, "0"
  808.     END IF
  809.     RestoreCursor CursorSave%
  810.     ListSym$ = ""
  811. ''    i% = DoMsgBox("RecalcPath OK" + STR$(ftype%), "DEBUG", MB_TASKMODAL+MB_ICONHAND+MB_OK)
  812. END SUB
  813.  
  814.  
  815. '**
  816. '** Purpose:
  817. '**     Recalculates disk space and sets option status info according
  818. '**     to the current destination path.
  819. '** Arguments:
  820. '**     none.
  821. '** Returns:
  822. '**     none.
  823. '*************************************************************************
  824. SUB RecalcPath STATIC
  825.  
  826.     CursorSave% = ShowWaitCursor()
  827.  
  828.     RecalcOptFiles APPFILES
  829.     RecalcOptFiles OPTFILES1
  830.     RecalcOptFiles OPTFILES2
  831.     RecalcOptFiles OPTFILES3
  832.     RecalcOptFiles SYMFILES
  833.  
  834.     RestoreCursor CursorSave%
  835. END SUB
  836.  
  837.  
  838. '**
  839. '** Purpose:
  840. '**     Sets drive status info according to latest disk space calcs.
  841. '** Arguments:
  842. '**     none.
  843. '** Returns:
  844. '**     none.
  845. '*************************************************************************
  846. SUB SetDriveStatus STATIC
  847.  
  848.     drive$ = MID$(DEST$, 1, 1)
  849.     ndrive% = ASC(ucase$(drive$)) - ASC("A") + 1
  850.     cost& = VAL(GetListItem(APPNEEDS$, ndrive%)) + VAL(GetListItem(OPT1NEEDS$, ndrive%)) + VAL(GetListItem(OPT2NEEDS$, ndrive%)) + VAL(GetListItem(SYMNEEDS$, ndrive%))
  851.     free& = GetFreeSpaceForDrive(drive$)
  852.     IF NOPT$ = "1" THEN
  853.       cost& = cost& + 1161988
  854.     END IF
  855.     ReplaceListItem DRIVETEXT$, 1, drive$ + ":"
  856.     ReplaceListItem DRIVETEXT$, 2, STR$(cost& / 1024) + " K"
  857.     ReplaceListItem DRIVETEXT$, 3, STR$(free& / 1024) + " K"
  858.  
  859.     IF drive$ = WINDRIVE$ THEN
  860.         ReplaceListItem DRIVETEXT$, 4, ""
  861.         ReplaceListItem DRIVETEXT$, 5, ""
  862.         ReplaceListItem DRIVETEXT$, 6, ""
  863.     ELSE
  864.         ndrive% = ASC(ucase$(WINDRIVE$)) - ASC("A") + 1
  865.         cost& = VAL(GetListItem(APPNEEDS$, ndrive%)) + VAL(GetListItem(OPT1NEEDS$, ndrive%)) + VAL(GetListItem(OPT2NEEDS$, ndrive%))
  866.         ''IF NOPT$ = "1" THEN
  867.         ''  cost& = cost& + 1146712
  868.         ''END IF
  869.         IF cost& = 0 THEN
  870.             ReplaceListItem DRIVETEXT$, 4, ""
  871.             ReplaceListItem DRIVETEXT$, 5, ""
  872.             ReplaceListItem DRIVETEXT$, 6, ""
  873.         ELSE
  874.             ''IF NOPT$ = "1" THEN
  875.             ''  cost& = cost& + 1146712
  876.             ''END IF
  877.             free& = GetFreeSpaceForDrive(WINDRIVE$)
  878.             ReplaceListItem DRIVETEXT$, 4, WINDRIVE$ + ":"
  879.             ReplaceListItem DRIVETEXT$, 5, STR$(cost& / 1024) + " K"
  880.             ReplaceListItem DRIVETEXT$, 6, STR$(free& / 1024) + " K"
  881.         END IF
  882.     END IF
  883. END SUB
  884.  
  885.